package com.cskaoyan.java._1handle._1catch;

/**
 * 多分支try...catch
 * 语法:
 * try {
 * // 可能出现异常的，正常的代码逻辑
 * } catch(要捕获的异常类类名 对象名) {
 * // 在catch分支中写处理异常的代码，操作捕获的异常对象
 * } catch(要捕获的异常类类名 对象名) {
 * // 在catch分支中写处理异常的代码，操作捕获的异常对象
 * } ...
 * 如果try代码块中可能多种异常类型对象,而且想要针对这些异常对象分别作出不同处理
 * 那么必须使用多分支try...catch了.
 *
 *
 *
 *
 * @since 15:58
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {
        try {
            // System.out.println(10 / 0);
            int[] arr = null;
            // System.out.println(arr.length);
            arr = new int[0];
            System.out.println(arr[0]);
        } catch (NullPointerException e) {
            System.out.println("这里处理空指针异常!");
            e.printStackTrace();
        } catch (ArithmeticException e) {
            System.out.println("这里处理除0异常!");
            e.printStackTrace();
        }
        // 正确的写法应该是将父类类型匹配写在最下面,这时就相当于if..else当中的最后一个else,还相当于switch中的default,起着兜底的作用
        catch (Exception e) {
            System.out.println("程序抛出异常,直接都抓起来!");
        }
    }
}
